iT邦幫忙

2023 iThome 鐵人賽

DAY 28
0

今天會把 pybaseball 剩下的 functions 介紹完。主要是 Cache,跟一些查詢賽季紀錄的 functions。

Cache

因為很多的 functions 都會需要抓整季資料,假設我們重複使用相同的參數來透過 API 獲得資料,可能也會重複等待太多時間,這時候就能開啟 pybaseball 提供的 Cache 系統。

使用當方法非常簡單,只要 import cache function 並執行 cache.enable() 就好。開啟後大多數的 functions 都會儲存 Cache 在本機的資料夾裡,預設的話會存在使用者資料夾裡的 .pybaseball/cache (第一次使用會自動建立資料夾)。如果想改變儲存的資料夾可以修改環境變數 PYBASEBALL_CACHE

如果是使用 Colab 資料夾會放在 root 資料夾裡:

from pybaseball import cache, batting_stats_bref
# 開啟 Cache 快取系統
cache.enable()

# 儲存 function 回傳的資料進 Cache 資料夾
batting_stats_bref(2023)

預設的 Cache 儲存方式會是 Parquet 格式,不過他也有支援存成 csv 檔,只需要使用下面的程式碼即可:

from pybaseball import cache

cache.enable()
cache.config.cache_type='csv'
cache.config.save()

因為開啟快取系統後,儲存的快取資料會一直存在 .pybaseball 的資料夾裡,如果要清除的話可以使用這兩個 functions:

  • purge:刪除所有紀錄,不論快取有無過期。
  • flush:刪除所有過期紀錄。

但這邊需要注意一個問題,就是在使用 statcast 這個 function 的時候快取會儲存錯誤,原因是原始碼在包快取的時候有覆蓋到另一個快取,所以變成前一個快取還沒寫完,就去寫新的快取讓外面那個快取寫入異常,之後使用 purgeflush 都會出錯。詳情可以看下面這個 Issue 還有我嘗試解決所開的 PR:

其餘剩下的 Functions

schedule_and_record(season, team)

去抓 Baseball Reference 隊伍頁裡的選取球季賽程與對戰成績。裡面會有勝負、結束後的戰績、勝敗投與救援成功的選手名等資料。會有兩個參數可以使用:

  • season:必填,需為整數,想篩選的球季年份。
  • team:字串:必填,想篩選的球隊名稱。

範例:

from pybaseball import schedule_and_record

# 獲得 2023 球季道奇隊的賽程與各場成績
schedule_and_record(2023, 'LAD')

standings(season)

獲得賽季的戰績排名,這個 function 也是從 Baseball Reference 上面的 頁面 取得資料。可以獲得各分區的戰績排名。有一個參數 season 可以使用,如果沒填的話會是選取最近一年的球季戰績。

範例:

from pybaseball import standings

# 獲得最近一年的各球隊戰績
standings()

# 獲得 2007 年的各球隊戰績
standings(2007)

本日小結

今天介紹完最後剩下的一些 functions,感謝大家耐心地看完,這系列也即將邁向結束,再次感謝大家的觀看。如果我又遺漏的 functions 歡迎大家提醒我,我看再花一篇補充或是在留言回答,有任何錯誤也歡迎任何指教。沒意外的話明天會預計這次數據分析比賽我是怎麼使用 pybaseball 來完成我的比賽投稿的,希望大家會喜歡。

今日的程式碼:

https://colab.research.google.com/drive/1JJvrPjAtoWFaOW2gOZHLmh98cjpZ3D23?usp=sharing


上一篇
Day 27 - Retrosheet
下一篇
Day 29 - pybaseball 實例操作
系列文
Python 棒球數據分析套件 pybaseball 介紹30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言